home *** CD-ROM | disk | FTP | other *** search
/ Merciful 4 / Merciful - Disc 4.iso / rexx / framestoanim.pprx < prev    next >
Text File  |  1996-11-02  |  4KB  |  134 lines

  1. /* Personal Paint Amiga Rexx script - Copyright © 1995-1996 Cloanto Italia srl */
  2.  
  3. /* $VER: FramesToAnim.pprx 1.1 */
  4.  
  5. /** ENG
  6.   This script converts a set of separate image-files into an animation.
  7.   The files must follow the standard notation <Name>.<XXX>, where XXX
  8.   is the frame number (001, 002, 003, etc.). The number of the first frame
  9.   can be specified.
  10. */
  11.  
  12. /** DEU
  13.   Dieses Skript dient zur Umwandlung einer Reihe von Einzelbildern in eine
  14.   Animation. Die Quelldateien müssen der Standardnotation <Name>.<XXX>
  15.   folgen, wobei XXX die Einzelbildnummer (001, 002, 003, usw.) wiedergibt.
  16.   Die Nummer des ersten Einzelbilders läßt sich individuell festlegen.
  17. */
  18.  
  19. IF ARG(1, EXISTS) THEN
  20.     PARSE ARG PPPORT
  21. ELSE
  22.     PPPORT = 'PPAINT'
  23.  
  24. IF ~SHOW('P', PPPORT) THEN DO
  25.     IF EXISTS('PPaint:PPaint') THEN DO
  26.         ADDRESS COMMAND 'Run >NIL: PPaint:PPaint'
  27.         DO 30 WHILE ~SHOW('P',PPPORT)
  28.              ADDRESS COMMAND 'Wait >NIL: 1 SEC'
  29.         END
  30.     END
  31.     ELSE DO
  32.         SAY "Personal Paint could not be loaded."
  33.         EXIT 10
  34.     END
  35. END
  36.  
  37. IF ~SHOW('P', PPPORT) THEN DO
  38.     SAY 'Personal Paint Rexx port could not be opened'
  39.     EXIT 10
  40. END
  41.  
  42. ADDRESS VALUE PPPORT
  43. OPTIONS RESULTS
  44. OPTIONS FAILAT 10000
  45.  
  46. Get 'LANG'
  47. IF RESULT = 1 THEN DO        /* Deutsch */
  48.     txt_req_sel       = 'Erstes Bild der Sequenz angeben'
  49.     txt_err_badname   = 'Ungültiger Name'
  50.     txt_err_abort     = 'Ladevorgang wurde abgebrochen'
  51.     txt_err_load      = 'Fehler beim Laden: '
  52.     txt_err_oldclient = 'Für dieses Skript_ist eine neuere Version_von Personal Paint erforderlich'
  53. END
  54. ELSE IF RESULT = 2 THEN DO    /* Italiano */
  55.     txt_req_sel       = 'Selezionare primo fotogramma'
  56.     txt_err_badname   = 'Nome fotogramma non valido'
  57.     txt_err_abort     = 'Operazione annullata'
  58.     txt_err_load      = 'Errore nella lettura: '
  59.     txt_err_oldclient = 'Questa procedura richiede_una versione più recente_di Personal Paint'
  60. END
  61. ELSE DO                /* English */
  62.     txt_req_sel       = 'Select First Frame of Sequence'
  63.     txt_err_badname   = 'Invalid frame name'
  64.     txt_err_abort     = 'User abort during load'
  65.     txt_err_load      = 'Error during load: '
  66.     txt_err_oldclient = 'This script requires a newer_version of Personal Paint'
  67. END
  68.  
  69. Version 'REXX'
  70. rexxversion = RESULT
  71. IF rexxversion < 7 THEN DO
  72.     RequestNotify 'PROMPT "'txt_err_oldclient'"'
  73.     EXIT 10
  74. END
  75.  
  76. IF rexxversion < 4 THEN DO
  77.     FreeBrush
  78.     IF RC ~= 0 THEN
  79.         EXIT RC
  80.     bshfname = 'T:pprx_bsh.'PRAGMA('ID')
  81.     IF OPEN(bshfile, bshfname, 'W') THEN DO
  82.         WRITECH(bshfile, '464F524D 0000002A 494C424D 424D4844 00000014 00010001 00000000 01020100 00001010 028001E0 424F4459 00000002 FF00'X)
  83.         CALL CLOSE(bshfile)
  84.         LoadBrush bshfname 'FORCE'
  85.     END
  86. END
  87.  
  88. LockGUI
  89. RequestFile '"'txt_req_sel'"'
  90. IF RC = 0 THEN DO
  91.     loadname = RESULT
  92.     pos = LASTPOS('.', loadname)
  93.     len = LENGTH(loadname)
  94.     errcode = 0
  95.     IF pos = 0 THEN DO
  96.         errmess = txt_err_badname
  97.         errcode = 1000
  98.     END
  99.     ELSE DO
  100.         name = SUBSTR(loadname, 2, pos - 2)
  101.         digits = len - pos - 1
  102.         fnum = SUBSTR(loadname, pos + 1, digits)
  103.     END
  104.     IF errcode = 0 THEN DO
  105.         DO FOREVER
  106.             AddFrames        /* add one frame */
  107.             SetFramePosition 'NEXT'
  108.             fname = name || "." || RIGHT(fnum, digits, "0");
  109.             LoadImage '"'fname'" FORCE QUIET'
  110.             IF RC ~= 0 THEN DO
  111.                 IF RC = 5 THEN
  112.                     errmess = txt_err_abort
  113.                 ELSE IF RC ~= 36 THEN
  114.                     errmess = txt_err_load || RC
  115.  
  116.                 IF RC ~= 36 THEN errcode = RC
  117.  
  118.                 DeleteFrames    /* delete current (unused) frame */
  119.                 OptimizeAnimation 'QUIET'
  120.                 LEAVE
  121.             END
  122.             fnum = fnum + 1
  123.         END
  124.     END
  125.     IF errcode > 0 THEN
  126.         RequestNotify 'PROMPT "'errmess'"'
  127. END
  128. UnlockGUI
  129.  
  130. IF rexxversion < 4 THEN DO
  131.     FreeBrush 'FORCE'
  132.     ADDRESS COMMAND 'Delete >NIL: 'bshfname
  133. END
  134.